package com.example.design.demo.proxy;

/**
 * @author lfj
 * @date 2023/12/1 17:10
 * @description 代理模式执行方法
 */
public class ProxyDemoTest {
    public static void main(String[] args) {

    }

    /**
     * 普通模式
     */
    public static void test01(){
        //定义一个游戏玩家
        IGamePlayer player01 = new GamePlayer("游戏爱好者1号");
        System.out.println("开始时间：");
        //开始登录玩游戏
        player01.login("player01","123456");
        player01.killBoss();
        player01.killBoss();
        player01.upgrade();
        System.out.println("结束时间：");
    }

    /**
     * 代理模式
     * 会发现运行结果没变化，用户也没变，但是有人完成了
     */
    public static void test02() {
        //定义一个玩家
        IGamePlayer player01 = new GamePlayer("游戏爱好者1号");
        //同理，我们可以创建一个代练者，1号玩家认为一个人打怪太累了，没有那么多时间
        GamePlayerProxy01 gamePlayerProxy01 = new GamePlayerProxy01(player01);
        //所以我们把玩家1号传给代理者，让代理者完成
        System.out.println("开始时间");
        gamePlayerProxy01.login("zhangSan", "password");
        gamePlayerProxy01.killBoss();
        gamePlayerProxy01.upgrade();
        //记录结束游戏时间
        System.out.println("结束时间：");

    }
}
